home *** CD-ROM | disk | FTP | other *** search
/ MACD 5 / MACD 5.bin / workbench / libs / progargslib.lha / ProgArgs / Includes / ProgArgs.doc next >
Text File  |  1995-04-08  |  43KB  |  1,285 lines

  1. TABLE OF CONTENTS
  2.  
  3. progargs.library/AddProgArgsA
  4. progargs.library/AllocProgArgsA
  5. progargs.library/ExecProgArgsA
  6. progargs.library/FreeProgArgs
  7. progargs.library/GetProgArgsA
  8. progargs.library/PA_AddTagArgsA
  9. progargs.library/PA_AllocPooled
  10. progargs.library/PA_AllocTagArgsA
  11. progargs.library/PA_AllocVecPooled
  12. progargs.library/PA_CreatePool
  13. progargs.library/PA_DeletePool
  14. progargs.library/PA_FreePooled
  15. progargs.library/PA_FreeTagArgs
  16. progargs.library/PA_FreeVecPooled
  17. progargs.library/PA_GetArgEntry
  18. progargs.library/PA_NextArgEntry
  19. progargs.library/PA_RemTagArgsA
  20. progargs.library/RemProgArgsA
  21. progargs.library/AddProgArgsA                   progargs.library/AddProgArgsA
  22.                                                      11 Dec 1994    20:01:43
  23.    NAME
  24.        AddProgArgsA -- add/modify values in an argument set.
  25.        AddProgArgs -- varargs stub for AddProgArgsA().
  26.  
  27.    SYNOPSIS
  28.        result = AddProgArgsA( progArgs, argTags )
  29.        D0                     A0        A1
  30.  
  31.        BOOL AddProgArgsA( struct ProgArgs *, struct TagItem * )
  32.  
  33.        result = AddProgArgsA( progArgs, arg1Tag, ... )
  34.  
  35.        BOOL AddProgArgsA( struct ProgArgs *, Tag, ... )
  36.  
  37.    FUNCTION
  38.        This allows a program to modify the individual values in an
  39.        argument set.  Note that these are the values initially supplied as
  40.        the entries to AllocProgArgsA(); this function does NOT allow a
  41.        program to add completely new arguments.
  42.  
  43.        The exact behavior of this function can be controlled by various
  44.        control tags supplied in the argument tag list.  This includes
  45.        whether to interpret the supplied tag values in a ReadArgs() style
  46.        [integers are pointers to integers, multi arguments are an array of
  47.        string pointers], and whether to copy or just refer to the data.
  48.  
  49.        These control tags can occur multiple times in the argument array,
  50.        and effect only the interpretation of the tags which follow them.
  51.  
  52.    INPUTS
  53.        progArgs - ( struct ProgArgs * ) Argument set to modify.
  54.        argTags  - ( struct TagItem * ) Array of a { ArgID, Value } tags.
  55.  
  56.    RESULT
  57.        result - ( BOOL ) TRUE if all okay; FALSE if there was a problem.
  58.  
  59.    TAGS
  60.        PAC_RDArgsMode -- ( BOOL )
  61.             Argument parameters are in ReadArgs() style.
  62.             Default: FALSE.
  63.  
  64.             If TRUE, the arguments following this tag will be parsed
  65.             as ReadArgs() arguments [i.e., a /N is a pointer to a LONG
  66.             rather than an actual LONG.]  If FALSE, the standard
  67.             Workbench style will be used.
  68.  
  69.             The following argument types are currently recognized
  70.  
  71.             Template | ReadArgs()          | Workbench
  72.             ---------+---------------------+-----------------------------
  73.              default | UBYTE *             | UBYTE *
  74.                /N    | LONG *              | LONG
  75.                /M    | UBYTE **, NULL term | struct MultiArg *, term with
  76.                      |                     |    NULL ma_String
  77.  
  78.        PAC_CopyMode -- ( BOOL )
  79.             Copy supplied arguments.
  80.             Default: FALSE.
  81.  
  82.             If TRUE, the arguments following this tag will be copied
  83.             into the argument list, rather than just passed by reference.
  84.             If an argument you are supplying [for example, a string from
  85.             a string gadget] may not be valid for the existence of this
  86.             argument, you MUST tell the library to make a copy of it.
  87.  
  88.  
  89.    EXAMPLE
  90.  
  91.  
  92.    NOTES
  93.        .
  94.  
  95.    BUGS
  96.        .
  97.  
  98.    SEE ALSO
  99.        AllocProgArgsA(), RemProgArgsA(), libraries/progargs.h
  100.  
  101. progargs.library/AllocProgArgsA               progargs.library/AllocProgArgsA
  102.                                                      11 Dec 1994    19:57:41
  103.    NAME
  104.        AllocProgArgsA -- allocate a new argument set.
  105.        AllocProgArgs -- varargs stub for AllocProgArgsA().
  106.  
  107.    SYNOPSIS
  108.        progArgs = AllocProgArgsA( entries, cmdTags )
  109.        D0                         A0       A1
  110.  
  111.        struct ProgArgs * AllocProgArgsA( struct ArgEntry *,
  112.                                          struct TagItem * )
  113.  
  114.        progArgs = AllocProgArgsA( entries, cmd1Tag, ... )
  115.  
  116.        struct ProgArgs * AllocProgArgsA( struct ArgEntry *, Tag, ... )
  117.  
  118.    FUNCTION
  119.        This fuction allocates a new argument set, based on the argument
  120.        templates supplied by 'entries'.  The cmdTags are then sent to
  121.        ExecProgArgs() for any initial operations which should be performed.
  122.  
  123.        Argument entries are basically an extensions to the DOS ReadArgs()
  124.        templates; each entry contains a similar template for that -single-
  125.        argument, along with additional data such as a default value and
  126.        description.  For example:
  127.  
  128.        #define FILES_ARG (TAG_ARGENTRY+1)
  129.  
  130.        struct MultiArg DefFiles[] = {
  131.            { "#?", NULL, NULL },
  132.            { NULL }
  133.        };
  134.  
  135.        struct ArgEntry myEntries[] = {
  136.            {   FILES_ARG, "FILES/A/M", "Files to process",
  137.                AEFLAG_DEFAULT, &DefFiles[0], NULL },
  138.            {   TAG_END }
  139.        };
  140.  
  141.        Creates an argument set with one argument - FILES - which must
  142.        always be present and has multiple values.  You can later refer to
  143.        this argument through AddProgArgsA(), RemProgArgsA() and
  144.        GetProgArgsA() through the ID FILES_ARG which was assigned to it.
  145.        If no explicit value exists for the argument, GetProgArgsA() will
  146.        return the default of a single file "#?".
  147.  
  148.        In addition to the array of ArgEntry structures which describe your
  149.        argument set, you may optionally supply a TagList of commands to
  150.        initially execute; if any of these commands fail, the entire
  151.        allocation will abort and return NULL.  See ExecProgArgsA() for more
  152.        details on what commands are available.
  153.  
  154.        Argument ID numbers MUST be in the range from TAG_USER+0x10000 to
  155.        TAG_USER+0x1FFFF; other ID numbers are reserved for control tags and
  156.        future extensions.
  157.  
  158.        Default values for arguments are supplied by setting AEFLAG_DEFAULT
  159.        in ArgEntry.ae_Flags, and providing the appropriate type [based on
  160.        the template] in ae_Default.  See below for a description of what
  161.        these types are.
  162.  
  163.        Additional description of what an argument is can be supplied by
  164.        pointing ae_Description to a string of text; this text will be
  165.        written as a comment to a text file or icon for any undefined
  166.        argumemts.
  167.  
  168.        For upwards compatibility, templates can only contain the uppercase
  169.        letters 'A' to 'Z', '=', and '/'.  Keyword synonyms can be defined
  170.        using '=' as with ReadArgs(), i.e. "FILES=FL/A/M" would result in
  171.        'FL' being equivalent to 'FILES'.  When writing arguments out to
  172.        disk, the first keyword will always be used.
  173.  
  174.        In order to simplify the interface, Workbench ToolTypes and CLI
  175.        ReadArgs() values are massaged into a standard set of data types.
  176.        The complete set of switches which an argument template may have and
  177.        the data types supported are:
  178.  
  179.        /A: Always
  180.            CLI and tooltype: This argument must be supplied, or a failure.
  181.            This is not currently supported very well for ToolTypes and
  182.            text files.
  183.        /K: Keyword
  184.            CLI: The keyword must be supplied before its value.
  185.            Tooltype: No effect.
  186.        /F: Finish line
  187.            CLI: The argument blindly takes the rest of the line.
  188.            Tooltype: No effect.
  189.        /N: Numeric
  190.            CLI and tooltype: The result is a signed long rather than a
  191.            pointer to a string.  Inputs can be a simple decimal string, a
  192.            hexidecimal string of the form $nnn or 0xnnn, or a binary string
  193.            of the form %nnn.  Setting the flag AEFLAG_HEXNUM will cause the
  194.            number to be written out as a hexadecimal string rather than the
  195.            default decimal format.
  196.        /S: Switch
  197.            CLI: Set to TRUE if keyword is supplied on command line.
  198.            Tooltype: Set to TRUE if value is 'yes' 'true' '1' etc.
  199.                      Set fo FALSE if value is 'no' 'false' '1' etc.
  200.        /T: Toggle
  201.            CLI: Toggles boolean value.
  202.            Tooltype: Set to TRUE if value is 'yes' 'true' '1' etc.
  203.                      Set fo FALSE if value is 'no' 'false' '1' etc.
  204.        /M: Multiple strings
  205.            CLI: Result is a pointer to array of MultiArg structures,
  206.                 terminated by a NULL ma_String.  ma_Directory is the
  207.                 program's current directory.
  208.            Tooltype: Result is a pointer to an array of MultiArg structures,
  209.                      filled in from the workbench arguments.
  210.                      Writing multi-args to tooltypes or a text file is not
  211.                      currently supported.
  212.  
  213.        By default, an argument is interpreted as a pointer to a
  214.        NULL-terminated string.
  215.  
  216.        Extended template switches:
  217.        NOT IMPLEMENTED YET!
  218.  
  219.        ^A: Program arguments
  220.            This marks a /M type as the main program arguments -- ie, the
  221.            multiple arguments collected by the command line and the
  222.            arguments passed by Workbench.
  223.        ^I: This argument is parsed for input only
  224.        ^O: This argument is parsed for output only
  225.            These two flags control the read/write (respectively) behavior
  226.            of an argument.  If neither or both are supplied, the argument
  227.            is read/write.  Otherwise it is either read- or write-only.
  228.        ^C: CLI argument
  229.        ^T: Text file argument
  230.        ^W: Workbench tooltype
  231.            These control in which context an argument is valid.  If none
  232.            if them are supplied, it is valid in all.  Otherwise, it is
  233.            only valid in the ones supplied.  For example, to have an
  234.            argument be parsed when reading the CLI command line or a
  235.            text file but not in Workbench tool types, use 'Key^C^T'.
  236.  
  237.    INPUTS
  238.        entries - ( struct ArgEntry * ) Argument templates.
  239.        cmdTags - ( struct TagItem * ) Initial operations.
  240.  
  241.    RESULT
  242.        progArgs - ( struct ProgArgs * ) A new argument set or NULL.
  243.  
  244.    TAGS
  245.  
  246.  
  247.    EXAMPLE
  248.  
  249.        A typical call to allocate an argument set and get its default
  250.        values, based on the above "FROM" ArgEntry, is:
  251.  
  252.        struct ProgArgs * myArgs;
  253.  
  254.        myArgs = AllocProgArgs(&myEntries[0],
  255.                PA_WBStartup,       _WBenchMsg, /* Hand in WB startup */
  256.                RPA_WBArguments,    FILES_ARG,  /* Parse WB startup */
  257.                PA_IgnoreError,     TRUE,       /* Don't fail on next err */
  258.                RPA_ProgIcon,       !_WBenchMsg,/* If no WB startup, read */
  259.                                                /* directly from icon */
  260.                PA_IgnoreError,     FALSE,      /* Allow fail on next err */
  261.                RPA_CmdInput,       TRUE,       /* Parse command line */
  262.                TAG_END);
  263.  
  264.        if(!myArgs) exit(20);
  265.  
  266.    NOTES
  267.        .
  268.  
  269.    BUGS
  270.        .
  271.  
  272.    SEE ALSO
  273.        ExecProgArgsA(), FreeProgArgs(), AddProgArgsA(), RemProgArgsA()
  274.  
  275. progargs.library/ExecProgArgsA                 progargs.library/ExecProgArgsA
  276.                                                      11 Dec 1994    19:39:07
  277.    NAME
  278.        ExecProgArgsA -- perform operations on a group of arguments.
  279.        ExecProgArgs -- varargs stub for ExecProgArgsA().
  280.  
  281.    SYNOPSIS
  282.        result = ExecProgArgsA( progArgs, cmdTags )
  283.        D0                      A0        A1
  284.  
  285.        BOOL ExecProgArgsA( struct ProgArgs *, struct TagItem * )
  286.  
  287.        result = ExecProgArgsA( progArgs, cmd1Tag, ... )
  288.  
  289.        BOOL ExecProgArgsA( struct ProgArgs *, Tag, ... )
  290.  
  291.    FUNCTION
  292.        Performs a set of operations on a previously allocated program
  293.        arguments set.  This includes reading and writing CLI, Workbench
  294.        and textfile arguments.  Just what operations are performed --
  295.        whether they read or write arguments, etc -- depends on the
  296.        supplied command tags.
  297.  
  298.        Operations are available for reading arguments from the command
  299.        line, Workbench, icons, and text files; there are operations for
  300.        writing arguments to icons and text files.
  301.  
  302.        The library provides a number of small features to fully support
  303.        ToolTypes.  Strings longer than about 100 characters will be split
  304.        into multiple tool types; the first with the regular "keyword=str"
  305.        form, and the following entries with the form "keyword.Xn=str",
  306.        where 'n' is the sequential number of this part of the argument.
  307.        The library will then automatically join all of these entries
  308.        together when reading the tool types back in.  This essentially
  309.        allows strings to be of any arbitrary length.
  310.  
  311.        In addition, non-printable characters within the string are
  312.        escaped with the convention \\xnn, where 'nn' is the hex value of
  313.        the character, and the escape character itself is represented as
  314.        '\\'.
  315.  
  316.        The tags are sequentially parsed in the order that they appear.
  317.        This means that any attribute tag, such as PA_IgnoreError, will
  318.        apply only to the operations which follow it, and NOT any of the
  319.        tags prior to where it is encountered in the tag list.  Multiple
  320.        attribute tags may occur in the tag list; later ones will overide
  321.        the values from earlier ones.  The order that tags are processed
  322.        in is the same as that used by the utility.library/NextTagItem()
  323.        function.
  324.  
  325.    INPUTS
  326.        progArgs - ( struct ProgArgs * ) Previously allocated argument set.
  327.        cmdTags  - ( struct TagItem * ) Operations to perform.
  328.  
  329.    RESULT
  330.        result - ( BOOL ) TRUE if there were no errors, else FALSE.
  331.  
  332.    TAGS
  333.        Global control tags:
  334.        ~~~~~~~~~~~~~~~~~~~
  335.  
  336.        PA_CLIStartup -- ( UBYTE * )
  337.            Supply the program's CLI arguments.
  338.            Default: NULL
  339.  
  340.            This tag supplies the command line given by the CLI.  If
  341.            NULL, the default of GetCmdStr() is used; otherwise, it will
  342.            be set to the string this tag supplies.
  343.  
  344.        PA_WBStartup -- ( struct WBStartup * )
  345.            Supply the program's Workbench startup message.
  346.            Default: NULL
  347.  
  348.            This tag supplies the Workbench startup message given to the
  349.            program, which will be used to determine where the program's
  350.            .info file is for reading ToolTypes and Workbench arguments.
  351.            This tag essentially sets what will be later used for PROGDIR:
  352.            and the program's name from the startup message.  If NULL,
  353.            the defaults of the actual lock on PROGDIR: and the program name
  354.            retrieved from DOS will be used.
  355.  
  356.        PA_SetDirectory -- ( BPTR ) Lock
  357.            Set directory to read/write files from.
  358.            Default: PADIR_PROGRAM
  359.  
  360.            When this tag is encountered, the directory which later
  361.            filenames are relative to is set to ti_Data.  Initially,
  362.            this directory is the directory which the program exists
  363.            in, aka PROGDIR:
  364.  
  365.            A few magic values are defined for this tag; these
  366.            are used to select standard directories:
  367.  
  368.            PADIR_PROGRAM -- Program directory, PROGDIR:
  369.            PADIR_CURRENT -- Process's current directory
  370.            PADIR_TEMP    -- T:
  371.            PADIR_ENV     -- ENV:
  372.            PADIR_ENVARC  -- ENV *and* ENVARC:
  373.                                ENV: is first written, then the resulting
  374.                                file is copied directly to ENVARC:
  375.            PADIR_PREFS   -- PREFS:
  376.            PADIR_PRESETS -- PREFS:Presets/
  377.                                The "Presets" directory will be created if
  378.                                it does not already exist.
  379.  
  380.            Note that changing to T, ENV, ENVARC, PREFS or PRESETS may
  381.            fail if a lock can not be obtained on that directory.  If this
  382.            happens [and PA_IgnoreError is TRUE], the library will fall
  383.            back to PADIR_CURRENT.
  384.  
  385.            Changes in this tag's value are not remembered between calls
  386.            to ExecProgArgsA() and AllocProgArgsA().
  387.  
  388.        PA_EscapeChar -- ( UBYTE )
  389.            Set escape character for strings.
  390.            Default: '\\'
  391.  
  392.            Sets the character used to escape non-printable codes
  393.            when reading and writing text files and ToolTypes.
  394.            The escape sequence is formatted as ExNN, where E is
  395.            the escape character, x is the literal char x, and NN is
  396.            the two digit hex value of the desired character.
  397.  
  398.            Setting the escape character to 0 inhibits all escape
  399.            substitution and parsing.
  400.  
  401.        PA_IgnoreError -- ( BOOL )
  402.            Set handling of error conditions.
  403.            Default: FALSE
  404.  
  405.            If TRUE, commands which cause errors will be skipped,
  406.            rather than terminating the execution of all the following
  407.            commands.  This is useful for reading a text file which
  408.            may not exist -- if this tag is not set to TRUE, then
  409.            the failed read attempt will abort without executing
  410.            any of the command after it.
  411.  
  412.            Changes in this tag's value are not remembered between calls
  413.            to ExecProgArgsA() and AllocProgArgsA().
  414.  
  415.        PA_CreateIcon -- ( BOOL )
  416.             Set creation of program icon if doesn't exit.
  417.             Default: TRUE
  418.  
  419.             If TRUE, when writing out tooltypes, the library will
  420.             create an icon for the program if one doesn't already
  421.             exist.  Otherwise, if no icon already exists an error
  422.             will be returned.  This essentially determines whether
  423.             GetDiskObject() or GetDiskObjectNew() is called when
  424.             reading the old tooltypes.
  425.  
  426.             This only effects the writing of icons; reading a non-
  427.             existent icon will cause an error no matter how this
  428.             flag is set.
  429.  
  430.             Changes in this tag's value are not remembered between calls
  431.             to ExecProgArgsA() and AllocProgArgsA().
  432.  
  433.        PA_CreateDirs -- ( BOOL )
  434.             Set automatic creation of file directories.
  435.             Default: FALSE
  436.  
  437.             If TRUE, when writing out a textfile or an explicitly
  438.             name diskobject [WPA_TextFileName/WPA_DiskObjectName],
  439.             the library will create any subdirectories in the
  440.             filename path if they don't already exist.  This is useful
  441.             when writing a file to ENV: which is in a subdiretory, i.e.
  442.             ENV:myProgram/myPrefs.tt".  If 'myProgram' doesn't
  443.             already exist in ENV: and this tag is TRUE, it will
  444.             be created for you.  This works for any number of
  445.             sub-directories in the path which need to be created.
  446.  
  447.             Changes in this tag's value are not remembered between calls
  448.             to ExecProgArgsA() and AllocProgArgsA().
  449.  
  450.        PA_AllComments -- ( BOOL )
  451.             Set writing of all arguments as comments.
  452.             Default: FALSE
  453.  
  454.             If TRUE, when writing arguments only argument
  455.             comments and no values are written.  This can be
  456.             used to write the "default" values out to an icon
  457.             or file -- all of the arguments have no value, so
  458.             the program's default values are used when they
  459.             are next read in.
  460.  
  461.             Changes in this tag's value are not remembered between calls
  462.             to ExecProgArgsA() and AllocProgArgsA().
  463.  
  464.        PA_ForceWrite -- ( BOOL )
  465.             Set writing of all arguments in the set.
  466.             Default: TRUE
  467.  
  468.             If TRUE, all entries in the argument will be written,
  469.             no matter what they will overwrite.  If FALSE, an
  470.             argument will not be written if its current value is
  471.             undefined, but it is defined in the file being
  472.             overwritten.
  473.  
  474.             Changes in this tag's value are not remembered between calls
  475.             to ExecProgArgsA() and AllocProgArgsA().
  476.  
  477.        PA_TransHook -- ( struct Hook * )
  478.            Set hook to localize strings.
  479.            Default: NULL
  480.  
  481.            This tag supplies the address of a hook through which the
  482.            library will translate various strings.  This is primarily
  483.            intended for localization support -- the supplied hook
  484.            should in some way look up the string in its locale catalog.
  485.  
  486.            The Hook should be a standard OS hook structure.  The library
  487.            will call this hook with a 'PA_StrTransMsg' sent as the message
  488.            and either the calling ProgArgs structure or a value specified
  489.            with the PA_TransObject (below) as the object.  The callee
  490.            should be sure to check the stm_Message is STM_STRING and ignore
  491.            all other messages.  The value returned by the hook must ALWAYS
  492.            be either a pointer to a valid string or NULL.
  493.  
  494.            Note that if this tag is supplied, ae_Description should be a
  495.            string ID code rather than a literal string.
  496.  
  497.            The library currently only sends translation messages for
  498.            ArgEntry.ae_Description, and the translation is performed at the
  499.            time that the description be being referenced, NOT during
  500.            initialization in AllocProgArgsA().
  501.  
  502.        PA_TransObject -- ( void * )
  503.            Set parameter to pass as 'object' to PA_TransHook.
  504.            Default: Address of this ProgArgs.
  505.  
  506.            This tag supplies an alternate 'object' to send to the above
  507.            translation hook.  This may, for example, be a pointer to a
  508.            block containing all the program's strings which will be
  509.            searched.
  510.  
  511.  
  512.        Argument reading tags:
  513.        ~~~~~~~~~~~~~~~~~~~~~
  514.  
  515.        RPA_CmdInput -- ( BOOL )
  516.             Do ReadArgs() style parsing of command input.
  517.  
  518.             If TRUE, the program's next command line will be parsed.
  519.             This is the typical way to get the program's CLI input -
  520.             the first occurance of this tag will retrieve the program's
  521.             command line.  Successive use of this tag will then wait
  522.             for the user to input another command string.  Normal DOS
  523.             interaction occurs for each parse, i.e. prompting for input
  524.             when the user supplies '?'.
  525.  
  526.             If running under Workbench, no action occurs.
  527.  
  528.        RPA_CmdLine -- ( BOOL )
  529.             Do ReadArgs() style parsing of command line.
  530.  
  531.             If TRUE, the program's command line (ie, GetCmdStr() or the
  532.             custom command line supplied by PA_CLIStartup) will be
  533.             parsed.  NO user interaction occurs, so this is generally not
  534.             the way you should initially parse the command line.
  535.  
  536.        RPA_CmdString -- ( UBYTE * )
  537.             Do ReadArgs() style parsing of string.
  538.  
  539.             This tag supplies a string which will be parsed through
  540.             the standard DOS ReadArgs() call.  No prompts are
  541.             generated for additional information.  As with ReadArgs(),
  542.             this string should end with a \n.
  543.  
  544.        RPA_WBArguments -- ( Tag )
  545.             Extract arguments from program's Workbench startup message.
  546.  
  547.             This tag uses the Workbench startup message previously supplied
  548.             with PA_WBStartup, and places them into the given argument tag.
  549.             The value put in the argument is an array of MultiArg structures,
  550.             representing the Workbench arguments.  This means that the
  551.             argument they are put in should be of type /M.
  552.  
  553.        RPA_ProgIcon -- ( BOOL )
  554.             Extract arguments from program's icon.
  555.  
  556.             This tag, if TRUE, will cause the program's .info file to
  557.             be examined for relevant tool types.  This is much like
  558.             PPA_WBStartup except that no Workbench startup arguments are
  559.             parsed, and this can also be used by programs started through
  560.             the CLI.  It is typically used by a program to extract any tool
  561.             types from its icon to set up defaults before parsing the
  562.             command line.
  563.  
  564.             Note that this only opens an icon file with the program's name;
  565.             you must be sure to be in PADIR_PROGRAM to get your program's
  566.             actual icon file.
  567.  
  568.        RPA_DiskObjectName -- ( BOOL )
  569.             Extract arguments from an arbitrary DiskObject.
  570.  
  571.             This tag supplies the name of an icon from which to extract
  572.             its tool types.  The name is relative to the current directory
  573.             that has been selected, and should not include the trailing
  574.             info'.
  575.  
  576.        RPA_TextFileName -- ( BOOL )
  577.             Extract arguments from a text file.
  578.  
  579.             This tag supplies the name of a file from which to read
  580.             the program's arguments.  This file is formatted much
  581.             like a tooltypes array, one argument per line.
  582.  
  583.  
  584.        Argument writing tags:
  585.        ~~~~~~~~~~~~~~~~~~~~~
  586.  
  587.        WPA_ProgIcon -- ( BOOL )
  588.             Write tooltypes out to program icon.
  589.  
  590.             When encountered the program arguments are written out to
  591.             the program's .info file in the tool type array.  This works
  592.             for both CLI and Workbench started programs.
  593.  
  594.             Note that this only opens an icon file with the program's name;
  595.             you must be sure to be in PADIR_PROGRAM to write your program's
  596.             actual icon file.
  597.  
  598.        WPA_DiskObjectName -- ( UBYTE * )
  599.             Name of file to write disk object to.
  600.  
  601.             Supplies the name of the file to write the DiskObject out as,
  602.             without the trailing '.info'.  This can be used to write out
  603.             somewhere besides your program's .info file.
  604.  
  605.        WPA_TextFileName -- ( UBYTE * )
  606.             Name of file to write arguments out to as text.
  607.  
  608.             Supplies the name of a file to write the arguments out to, as
  609.             a standard ASCII file.
  610.  
  611.    EXAMPLE
  612.  
  613.        /* Read arguments from the file "ENV:myAppPrefs" */
  614.  
  615.        result = ExecProgArgs(myArgs,
  616.            PA_SetDirectory,    PADIR_ENV,      /* Look in ENV: */
  617.            PA_IgnoreError,     TRUE,           /* Just use defaults */
  618.                                                /* if it doesn't exist. */
  619.            RPA_TextFileName,   "myAppPrefs",   /* Read the file */
  620.            TAG_END);
  621.  
  622.        if(!result) exit(20);
  623.  
  624.        /* Write file back to ENV: and ENVARC: */
  625.  
  626.        result = ExecProgArgs(myArgs,
  627.            PA_SetDirectory,    PADIR_ENVARC,   /* Write ENV: & ENVARC: */
  628.            WPA_TextFileName,   "myAppPrefs",   /* Write the files */
  629.            TAG_END);
  630.  
  631.        if(!result) exit(20);
  632.  
  633.  
  634.    NOTES
  635.        .
  636.  
  637.    BUGS
  638.        .
  639.  
  640.    SEE ALSO
  641.        AllocProgArgsA()
  642.  
  643. progargs.library/FreeProgArgs                   progargs.library/FreeProgArgs
  644.                                                      11 Dec 1994    19:56:14
  645.    NAME
  646.        FreeProgArgs -- deallocate a previously allocated argument set.
  647.  
  648.    SYNOPSIS
  649.        FreeProgArgs( progArgs )
  650.                      A0
  651.  
  652.        void FreeProgArgs( struct ProgArgs * )
  653.  
  654.    FUNCTION
  655.        Deallocates all memory assoiciated with an argument set previously
  656.        allocated with AllocProgArgs().
  657.  
  658.    INPUTS
  659.        progArgs - ( struct ProgArgs * ) The argument set to free.
  660.  
  661.    RESULT
  662.        nothing.
  663.  
  664.    TAGS
  665.  
  666.  
  667.    EXAMPLE
  668.  
  669.  
  670.    NOTES
  671.        .
  672.  
  673.    BUGS
  674.        .
  675.  
  676.    SEE ALSO
  677.        AllocProgArgs()
  678.  
  679. progargs.library/GetProgArgsA                   progargs.library/GetProgArgsA
  680.                                                      22 Dec 1994    04:52:32
  681.    NAME
  682.        GetProgArgsA -- get values from an argument set.
  683.        GetProgArgs -- varargs stub for GetProgArgsA().
  684.  
  685.    SYNOPSIS
  686.        result = GetProgArgsA( progArgs, argTags )
  687.        D0                     A0        A1
  688.  
  689.        BOOL GetProgArgsA( struct ProgArgs *, struct TagItem * )
  690.  
  691.        result = GetProgArgsA( progArgs, arg1Tag, ... )
  692.  
  693.        BOOL GetProgArgsA( struct ProgArgs *, Tag, ... )
  694.  
  695.    FUNCTION
  696.        Extracts the requested arguments from the given argument set.  The
  697.        tag list should be a standard array of { TagValue, PutAddress } tag
  698.        pairs, where TagValue is an argument ID being requested and
  699.        PutAddress is the address of a ULONG in memory in which to place the
  700.        value.  If an explicit value for the argument is not found in the
  701.        argument list, the argument's default value (if any) is returned.
  702.  
  703.        If any of the requested arguments have no explicit or default value
  704.        an result of FALSE will be returned; if all values are extracted
  705.        okay, TRUE is returned.
  706.  
  707.    INPUTS
  708.        progArgs - ( struct ProgArgs * ) Argument set to query.
  709.        argTags  - ( struct TagItem * ) Arguments to retrieve.
  710.  
  711.    RESULT
  712.        result - ( BOOL ) TRUE if all is okay; FALSE if any argument
  713.                 was not found.
  714.  
  715.    TAGS
  716.  
  717.  
  718.    EXAMPLE
  719.  
  720.  
  721.    NOTES
  722.        .
  723.  
  724.    BUGS
  725.        .
  726.  
  727.    SEE ALSO
  728.        AllocProgArgsA(), AddProgArgsA()
  729.  
  730. progargs.library/PA_AddTagArgsA               progargs.library/PA_AddTagArgsA
  731.                                                      11 Dec 1994    20:21:21
  732.    NAME
  733.        PA_AddTagArgsA -- add tags to an argument array.
  734.        PA_AddTagArgs -- varargs stub for PA_AddTagArgsA().
  735.  
  736.    SYNOPSIS
  737.        result = PA_AddTagArgsA( base, args )
  738.        D0                       A0    A1
  739.  
  740.        BOOL PA_AddTagArgsA( struct TagArgs *, struct TagItem * )
  741.  
  742.        result = PA_AddTagArgsA( base, arg1Type, ... )
  743.  
  744.        BOOL PA_AddTagArgsA( struct TagArgs *, Tag, ... )
  745.  
  746.    FUNCTION
  747.        Adds the given tag values to the argument array.  If these tags did
  748.        not exist, new ones are created in the array.  If they did exist,
  749.        their values are changed to the new value in ti_Data.
  750.  
  751.    INPUTS
  752.        base - ( struct TagArgs * ) Argument array to modify.
  753.        args - ( struct TagItem * ) Argument values to set.
  754.  
  755.    RESULT
  756.        result - ( BOOL ) TRUE if all is okay; FALSE if failure (ie memory).
  757.  
  758.    TAGS
  759.  
  760.  
  761.    EXAMPLE
  762.  
  763.  
  764.    NOTES
  765.        .
  766.  
  767.    BUGS
  768.        .
  769.  
  770.    SEE ALSO
  771.        PA_AllocTagArgsA(), PA_RemTagArgsA()
  772.  
  773. progargs.library/PA_AllocPooled               progargs.library/PA_AllocPooled
  774.                                                      11 Dec 1994    19:03:14
  775.    NAME
  776.        PA_AllocPooled -- allocate a memory block from a pool.
  777.  
  778.    SYNOPSIS
  779.        memory = PA_AllocPooled( poolHeader, memSize )
  780.        D0                       A0          D0
  781.  
  782.        APTR PA_AllocPooled( APTR, unsigned long )
  783.  
  784.    FUNCTION
  785.        Allocates a new memory block of the given size from a memory pool.
  786.  
  787.    INPUTS
  788.        poolHeader - ( APTR ) Previously created pool.
  789.        memSize    - ( unsigned long ) Amount of memory to allocate.
  790.  
  791.    RESULT
  792.        memory - ( APTR ) The new block of memory or NULL.
  793.  
  794.    TAGS
  795.  
  796.  
  797.    EXAMPLE
  798.  
  799.  
  800.    NOTES
  801.        This function is simply an interface to the amiga.lib pool functions
  802.        which the library uses internally.  See AllocPooled() for details.
  803.  
  804.    BUGS
  805.        .
  806.  
  807.    SEE ALSO
  808.        AllocPooled(), LibAllocPooled(),
  809.        PA_CreatePool(), PA_DeletePool(), PA_FreePooled()
  810.  
  811. progargs.library/PA_AllocTagArgsA           progargs.library/PA_AllocTagArgsA
  812.                                                      11 Dec 1994    20:26:59
  813.    NAME
  814.        PA_AllocTagArgsA -- create a brand new argument array.
  815.        PA_AllocTagArgs -- varargs stub for PA_AllocTagArgsA().
  816.  
  817.    SYNOPSIS
  818.        base = PA_AllocTagArgsA( controlTags)
  819.        D0                       A0
  820.  
  821.        struct TagArgs * PA_AllocTagArgsA( struct TagItem * )
  822.  
  823.        base = PA_AllocTagArgsA( control1Tag, ... )
  824.  
  825.        struct TagArgs * PA_AllocTagArgsA( Tag, ... )
  826.  
  827.    FUNCTION
  828.        Creates a new 'TagArgs' structure.  This is a dynamic form of a
  829.        utility.library tag list; there are functions which can be used to
  830.        dynamically add, modify and remove tags from the array.
  831.  
  832.        The tag list created by an argument array has two important
  833.        properties:
  834.  
  835.        1. Only one instance of any unique tag ID can exist in the array.
  836.        This means that calling PA_AddTagArgsA() for a tag ID which already
  837.        exists in the array will simply modify its value, rather than adding
  838.        a new tag.
  839.  
  840.        2. The tag list is unordered.  A program can not depend on the tag
  841.        IDs it puts into an argument array to result in them being in any
  842.        particular order when it later looks at the resulting tag list.
  843.  
  844.    INPUTS
  845.        controlTags - ( struct TagItem * ) Control overall behavior;
  846.                      currently ignored.
  847.  
  848.    RESULT
  849.        base - ( struct TagArgs * ) The argument array base structure.
  850.  
  851.    TAGS
  852.  
  853.  
  854.    EXAMPLE
  855.  
  856.  
  857.    NOTES
  858.        .
  859.  
  860.    BUGS
  861.        .
  862.  
  863.    SEE ALSO
  864.        PA_FreeTagArgs(), PA_AddTagArgsA(), PA_RemTagArgsA()
  865.  
  866. progargs.library/PA_AllocVecPooled         progargs.library/PA_AllocVecPooled
  867.                                                      11 Dec 1994    19:16:35
  868.    NAME
  869.        PA_AllocVecPooled -- allocate memory from pool and remember size.
  870.  
  871.    SYNOPSIS
  872.        memory = PA_AllocVecPooled( poolHeader, memSize )
  873.        D0                          A0          D0
  874.  
  875.        APTR PA_AllocVecPooled( APTR, ULONG )
  876.  
  877.    FUNCTION
  878.        Allocates a memory block from a pool, and remembers the size of
  879.        the block.  This function is identical to PA_AllocPooled(),
  880.        except the size of the block is remembered for when it is later
  881.        freed.  PA_FreeVecPooled() must be used to free the block.
  882.  
  883.    INPUTS
  884.        poolHeader - ( APTR ) The pool to allocate in.
  885.        memSize    - ( ULONG ) Size of the block to allocate.
  886.  
  887.    RESULT
  888.        memory - ( APTR ) A new block of memory, or NULL.
  889.  
  890.    TAGS
  891.  
  892.  
  893.    EXAMPLE
  894.  
  895.  
  896.    NOTES
  897.        .
  898.  
  899.    BUGS
  900.        .
  901.  
  902.    SEE ALSO
  903.        PA_FreeVecPooled(), PA_CreatePool(), PA_DeletePool()
  904.  
  905. progargs.library/PA_CreatePool                 progargs.library/PA_CreatePool
  906.                                                      11 Dec 1994    19:09:14
  907.    NAME
  908.        PA_CreatePool -- create a new memory pool.
  909.  
  910.    SYNOPSIS
  911.        pool = PA_CreatePool( memFlags, puddleSize, threshSize )
  912.        D0                    D0        D1          D2
  913.  
  914.        APTR PA_CreatePool( unsigned long, unsigned long, unsigned long )
  915.  
  916.    FUNCTION
  917.        Creates a new memory pool, which can then have Alloc/Free operations
  918.        performed on it.
  919.  
  920.    INPUTS
  921.        memFlags   - ( unsigned long ) Memory type of this pool.
  922.        puddleSize - ( unsigned long ) Bytes in each puddle.
  923.        threshSize - ( unsigned long ) Block size to go out of puddle.
  924.  
  925.    RESULT
  926.        pool - ( APTR ) A newly created pool for use, or NULL.
  927.  
  928.    TAGS
  929.  
  930.  
  931.    EXAMPLE
  932.  
  933.  
  934.    NOTES
  935.        This function is simply an interface to the amiga.lib pool functions
  936.        which the library uses internally.  See CreatePool() for details.
  937.  
  938.    BUGS
  939.        .
  940.  
  941.    SEE ALSO
  942.        CreatePool(), LibCreatePool(),
  943.        PA_AllocPooled(), PA_DeletePool(), PA_FreePooled()
  944.  
  945. progargs.library/PA_DeletePool                 progargs.library/PA_DeletePool
  946.                                                      11 Dec 1994    19:12:06
  947.    NAME
  948.        PA_DeletePool -- deallocate a previously created and used pool.
  949.  
  950.    SYNOPSIS
  951.        PA_DeletePool( poolHeader )
  952.                       A0
  953.  
  954.        void PA_DeletePool( APTR )
  955.  
  956.    FUNCTION
  957.        Frees all memory associated with the given pool.
  958.  
  959.    INPUTS
  960.        poolHeader - ( APTR ) A previously created pool.
  961.  
  962.    RESULT
  963.        nothing.
  964.  
  965.    TAGS
  966.  
  967.  
  968.    EXAMPLE
  969.  
  970.  
  971.    NOTES
  972.        This function is simply an interface to the amiga.lib pool functions
  973.        which the library uses internally.  See DeletePool() for details.
  974.  
  975.    BUGS
  976.        .
  977.  
  978.    SEE ALSO
  979.        DeletePool(), LibDeletePool(),
  980.        PA_AllocPooled(), PA_CreatePool(), PA_FreePooled()
  981.  
  982. progargs.library/PA_FreePooled                 progargs.library/PA_FreePooled
  983.                                                      11 Dec 1994    19:14:10
  984.    NAME
  985.        PA_FreePooled -- free a memory block in a pool.
  986.  
  987.    SYNOPSIS
  988.        PA_FreePooled( poolHeader, memory, memSize )
  989.        D0             A0          A1      D0
  990.  
  991.        void PA_FreePooled( APTR, APTR, unsigned long )
  992.  
  993.    FUNCTION
  994.        Frees a memory block previously allocated in the given pool.
  995.  
  996.    INPUTS
  997.        poolHeader - ( APTR ) Pool memory block is in.
  998.        memory     - ( APTR ) The memory being freed.
  999.        memSize    - ( unsigned long ) Size of the block.
  1000.  
  1001.    RESULT
  1002.        nothing.
  1003.  
  1004.    TAGS
  1005.  
  1006.  
  1007.    EXAMPLE
  1008.  
  1009.  
  1010.    NOTES
  1011.        This function is simply an interface to the amiga.lib pool functions
  1012.        which the library uses internally.  See FreePooled() for details.
  1013.  
  1014.    BUGS
  1015.        .
  1016.  
  1017.    SEE ALSO
  1018.        FreePooled(), LibFreePooled(),
  1019.        PA_AllocPooled(), PA_CreatePool(), PA_DeletePool()
  1020.  
  1021. progargs.library/PA_FreeTagArgs               progargs.library/PA_FreeTagArgs
  1022.                                                      11 Dec 1994    20:25:57
  1023.    NAME
  1024.        PA_FreeTagArgs -- free a previously allocated argument array.
  1025.  
  1026.    SYNOPSIS
  1027.        PA_FreeTagArgs( base)
  1028.                        A0
  1029.  
  1030.        void PA_FreeTagArgs( struct TagArgs * )
  1031.  
  1032.    FUNCTION
  1033.        Frees all memory used by the given argument array.
  1034.  
  1035.    INPUTS
  1036.        base - ( struct TagArgs * ) The argument array to free.
  1037.  
  1038.    RESULT
  1039.        nothing.
  1040.  
  1041.    TAGS
  1042.  
  1043.  
  1044.    EXAMPLE
  1045.  
  1046.  
  1047.    NOTES
  1048.        .
  1049.  
  1050.    BUGS
  1051.        .
  1052.  
  1053.    SEE ALSO
  1054.        PA_AllocTagArgsA()
  1055.  
  1056. progargs.library/PA_FreeVecPooled           progargs.library/PA_FreeVecPooled
  1057.                                                      11 Dec 1994    19:31:37
  1058.    NAME
  1059.        PA_FreeVecPooled -- free a pool memory block, extracting block size.
  1060.  
  1061.    SYNOPSIS
  1062.        PA_FreeVecPooled( poolHeader, memory )
  1063.                          A0          A1
  1064.  
  1065.        void PA_FreeVecPooled( APTR, APTR )
  1066.  
  1067.    FUNCTION
  1068.        Frees the given memory block from the pool.  The memory block size
  1069.        given to PA_AllocVecPooled() is the size of the freed memory block
  1070.  
  1071.    INPUTS
  1072.        poolHeader - ( APTR ) The pool the block is in.
  1073.        memory     - ( APTR ) The memory block to free.
  1074.  
  1075.    RESULT
  1076.        nothing.
  1077.  
  1078.    TAGS
  1079.  
  1080.  
  1081.    EXAMPLE
  1082.  
  1083.  
  1084.    NOTES
  1085.        .
  1086.  
  1087.    BUGS
  1088.        .
  1089.  
  1090.    SEE ALSO
  1091.        PA_AllocVecPooled(), PA_CreatePool(), PA_DeletePool()
  1092.  
  1093. progargs.library/PA_GetArgEntry               progargs.library/PA_GetArgEntry
  1094.                                                      22 Dec 1994    16:12:04
  1095.    NAME
  1096.        PA_GetArgEntry -- find ArgEntry structure for an argument ID.
  1097.  
  1098.    SYNOPSIS
  1099.        argEntry = PA_GetArgEntry( progArgs, entryID )
  1100.        D0                         A0        D0
  1101.  
  1102.        struct ArgEntry * PA_GetArgEntry( struct ProgArgs *, Tag )
  1103.  
  1104.    FUNCTION
  1105.        Returns the ArgEntry structure associated with the given argument
  1106.        ID.  This is the same structure which was originally passed in by
  1107.        the program to describe this ID.
  1108.  
  1109.    INPUTS
  1110.        progArgs - ( struct ProgArgs * ) Argument set to look in.
  1111.        entryID  - ( Tag ) Argument ID to get entry for.
  1112.  
  1113.    RESULT
  1114.        argEntry - ( struct ArgEntry * ) ArgEntry describing the ID or NULL.
  1115.  
  1116.    TAGS
  1117.  
  1118.  
  1119.    EXAMPLE
  1120.  
  1121.  
  1122.    NOTES
  1123.        .
  1124.  
  1125.    BUGS
  1126.        .
  1127.  
  1128.    SEE ALSO
  1129.        AllocProgArgsA(), PA_NextArgEntry()
  1130.  
  1131. progargs.library/PA_NextArgEntry             progargs.library/PA_NextArgEntry
  1132.                                                      22 Dec 1994    16:15:55
  1133.  NAME
  1134.        PA_NextArgEntry -- get next sequential ArgEntry in an argument set.
  1135.  
  1136.    SYNOPSIS
  1137.        nextEntry = PA_NextArgEntry( progArgs, curEntry )
  1138.        D0                           A0        A1
  1139.  
  1140.        struct ArgEntry * PA_NextArgEntry( struct ProgArgs *,
  1141.                                           struct ArgEntry * )
  1142.  
  1143.    FUNCTION
  1144.        Returns the ArgEntry which is sequentially after the given one.  If
  1145.        the given ArgEntry is NULL, the first entry in the argument set is
  1146.        returned.  If the current entry is the last in the argument set, a
  1147.        NULL is returned.  This function can be used to loop over all of the
  1148.        arguments defined in an argument set.
  1149.  
  1150.    INPUTS
  1151.        progArgs - ( struct ProgArgs * ) Argument set to look in.
  1152.        curEntry - ( struct ArgEntry * ) Current entry in the set.
  1153.  
  1154.    RESULT
  1155.        nextEntry - ( struct ArgEntry * ) Entry sequentially after the
  1156.                    given current one.
  1157.  
  1158.    TAGS
  1159.  
  1160.  
  1161.    EXAMPLE
  1162.  
  1163.        /* Show all argument templates in an argument set /*
  1164.  
  1165.        void ShowArguments(struct ProgArgs * pa)
  1166.        {
  1167.            struct ArgEntry* ae;
  1168.  
  1169.            ae = NULL;
  1170.            while( (ae=PA_NextArgEntry(pa,ae)) ) {
  1171.  
  1172.                printf("%s\n",ae->ae_Template);
  1173.  
  1174.            }
  1175.        }
  1176.  
  1177.    NOTES
  1178.        .
  1179.  
  1180.    BUGS
  1181.        .
  1182.  
  1183.    SEE ALSO
  1184.        AllocProgArgsA(), PA_GetArgEntry()
  1185.  
  1186. progargs.library/PA_RemTagArgsA               progargs.library/PA_RemTagArgsA
  1187.                                                      11 Dec 1994    20:23:29
  1188.    NAME
  1189.        PA_RemTagArgsA -- remove tags from an argument array.
  1190.        PA_RemTagArgs -- varargs stub for PA_RemTagArgsA().
  1191.  
  1192.    SYNOPSIS
  1193.        result = PA_RemTagArgsA( base, args )
  1194.        D0                       A0    A1
  1195.  
  1196.        BOOL PA_RemTagArgsA( struct TagArgs *, struct TagItem * )
  1197.  
  1198.        result = PA_RemTagArgsA( base, arg1Type, ... )
  1199.  
  1200.        BOOL PA_RemTagArgsA( struct TagArgs *, Tag, ... )
  1201.  
  1202.    FUNCTION
  1203.        Removes the given tag values from the argument array.  They will no
  1204.        longer exist in this argument array's tag list.
  1205.  
  1206.        The tag ti_Data fields of the argument array MUST contain the magic
  1207.        values REMARG_REMOVE or REMARG_IGNORE to control whether or not this
  1208.        argument will actually be removed; any other value is illegal.
  1209.  
  1210.    INPUTS
  1211.        base - ( struct TagArgs * ) Argument array to modify.
  1212.        args - ( struct TagItem * ) Arguments to remove.
  1213.  
  1214.    RESULT
  1215.        result - ( BOOL ) TRUE if all is okay, else FALSE.
  1216.  
  1217.    TAGS
  1218.  
  1219.  
  1220.    EXAMPLE
  1221.  
  1222.  
  1223.    NOTES
  1224.        .
  1225.  
  1226.    BUGS
  1227.        .
  1228.  
  1229.    SEE ALSO
  1230.        PA_AddTagArgsA(), PA_AllocTagArgsA()
  1231.  
  1232. progargs.library/RemProgArgsA                   progargs.library/RemProgArgsA
  1233.                                                      11 Dec 1994    20:12:26
  1234.    NAME
  1235.        RemProgArgsA -- remove values from an argument set.
  1236.        RemProgArgs -- varargs stub for RemProgArgsA().
  1237.  
  1238.    SYNOPSIS
  1239.        result = RemProgArgsA( progArgs, argTags )
  1240.        D0                     A0        A1
  1241.  
  1242.        BOOL RemProgArgsA( struct ProgArgs *, struct TagItem * )
  1243.  
  1244.        result = RemProgArgsA( progArgs, arg1Tag, ... )
  1245.  
  1246.        BOOL RemProgArgsA( struct ProgArgs *, Tag, ... )
  1247.  
  1248.    FUNCTION
  1249.        This allows a program to remove the individual values in an
  1250.        argument set.  Note that these are the values initially supplied as
  1251.        the entries to AllocProgArgsA(); this function does NOT allow a
  1252.        program to add completely new arguments.  The act of 'removing' a
  1253.        value simply means that the associated ArgEntry no longer has a
  1254.        value; a search for it in the argument tag list will result in it
  1255.        not being found, and if the arguments are written out to disk, this
  1256.        one will not be supplied.  [Or will only be supplied as a comment
  1257.        field, if the argument has a description associated with it.]
  1258.  
  1259.        The tag ti_Data fields of the argument array MUST contain the magic
  1260.        values REMARG_REMOVE or REMARG_IGNORE to control whether or not this
  1261.        argument will actually be removed; any other value is illegal.
  1262.  
  1263.    INPUTS
  1264.        progArgs - ( struct ProgArgs * ) Argument set to modify.
  1265.        argTags  - ( struct TagItem * ) Arguments to remove.
  1266.  
  1267.    RESULT
  1268.        result - ( BOOL ) TRUE if all is okay; FALSE if there was a problem.
  1269.  
  1270.    TAGS
  1271.  
  1272.  
  1273.    EXAMPLE
  1274.  
  1275.  
  1276.    NOTES
  1277.        .
  1278.  
  1279.    BUGS
  1280.        .
  1281.  
  1282.    SEE ALSO
  1283.        AllocProgArgs(), AddProgArgs()
  1284.  
  1285.